<?php

/**
 * 
 * Description of class DbAanwezigType
 * Database klassen om aanwezig type op te slaan, aan te passen, verwijderen of op te halen.
 * 
 * @version 0.2
 * @author Sander van Belleghem
 * 
 * Changelog:
 * Query's op database niveau uitvoeren ipv applicatie niveau.
 * 
 */

require_once 'class/defs/constants.php';
require_once FILE_DB_DATABASE;

class DbAanwezigType extends Database {
    
    private $aanwezig_type_id = '';
    private $beschrijving = '';
    
    public function __construct($aanwezig_type_id = ''){
        //if (DEBUG_LVL & DEBUG_LVL_CLASS) echo __FILE__ . __LINE__ .': ' . __CLASS__ .'<BR/>';
        
        parent::__construct();
        
        if (!empty ($aanwezig_type_id)){
            $this->get($aanwezig_type_id);
        } else {
            $this->reset();
        }
    }
    
    public function get($aanwezig_type_id){
        
        $query = mysql_query("SELECT * FROM aanwezigtype WHERE aanwezig_type_id = '" . mysql_real_escape_string($aanwezig_type_id) . "' LIMIT 1 ");
        if (!$res = mysql_fetch_object($query)){
            
            $this->reset();
            throw new Exception(DB_ERROR_SELECT);
        }
        
        $this->aanwezig_type_id = $aanwezig_type_id;
        $this->beschrijving = $res->beschrijving;
        
        if (DEBUG_LVL & DEBUG_LVL_QUERY) echo __FILE__ . ' ' . __LINE__ .': ' .$query . '<br />';
    }
    
    public function getId($aanwezig_type){
        $query = mysql_query("SELECT aanwezig_type_id FROM aanwezigtype WHERE beschrijving = '" . mysql_real_escape_string($aanwezig_type) . "' LIMIT 1");
        var_dump($query);
        if($query == false || !$res = mysql_fetch_object($query)){
            
            $this->reset();
            return false;
        }
        
        return $res;
    }
    
    public function getAanwezigTypeId(){
        
        return $this->aanwezig_type_id;
    }
    
    public function getBeschrijving(){
        
        return $this->beschrijving;
    }
    
    public function delete(){
        
        $query = "DELETE FROM aanwezigtype WHERE aanwezigtype . aanwezig_type_id ='" . mysql_real_escape_string($this->aanwezig_type_id) . "'  LIMIT 1 ";
        
        if (!$this->dbquery($query)){
            throw new Exception(DB_ERROR_COULDNOTDELETE);
        }

        if (DEBUG_LVL & DEBUG_LVL_QUERY)  echo __FILE__ . ' ' . __LINE__ .': ' .$query . '<br />';
        
        $this->reset();
    }

    public function save($beschrijving){
        if (!empty($beschrijving)){

            $query = "INSERT INTO aanwezig_type (beschrijving) VALUES ('" . mysql_real_escape_string($beschrijving) . "')";
            if (DEBUG_LVL & DEBUG_LVL_QUERY)  echo __FILE__ . ' ' . __LINE__ .': ' .$query . '<br />';

            if (!$this->dbquery($query)){
                throw new Exception(DB_ERROR_NIETVERWERKT);
            }
            
            // Udate class attr
            $this->aanwezig_type_id = mysql_insert_id();
            $this->beschrijving = $beschrijving;
            
            return true;
            
        } else {
            throw new Exception(DB_ERROR_INVOERFOUT);
        }
    }
    
    public function update($beschrijving){
        
        if (!empty($beschrijving)){
            
            $query = "UPDATE aanwezigtype SET beschrijving = '" . mysql_real_escape_string($beschrijving) . "' 
                        WHERE aanwezigtype . aanwezig_type_id ='" . mysql_real_escape_string($this->aanwezig_type_id) . "'";
            
            if (!$this->dbquery($query)){
                throw new Exception(DB_ERROR_NIETVERWERKT);
            }
            
            if (DEBUG_LVL & DEBUG_LVL_QUERY)  echo __FILE__ . ' ' . __LINE__ .': ' .$query . '<br />';
            
            $this->beschrijving = $beschrijving;
            
            return true;
            
        } else {
            throw new Exception(DB_ERROR_INVOERFOUT);
        }
    }

    private function reset(){
        
        $this->aanwezig_type_id = '';
        $this->beschrijving = '';
    }
    
    public function __destruct(){
        parent::__destruct();
    }
}

class TestDbAanwezigType {
    
    public function TestDbAanwezigType(){
        try {
            
            $save = new DbAanwezigType();
            $save->save(15, 2, DBAANWEZIGTYPE_TEST_NAAM);
            
            $update = new DbAanwezigType(1); 
            $update->update(5, 16, DBAANWEZIGTYPE_TEST_NAAM2);
            
            $delete = new DbAanwezigType(1);
            $delete->delete();
            
        } catch (Exception $e){
            echo '<pre>';
            echo 'Caught exception: ',  $e->getMessage(), "\n";
            echo '</pre>';
        }
    }
}
?>